package org.jet.emall.prod.transfer;

import org.jet.emall.prod.dto.CategoryDTO;
import org.jet.emall.prod.dto.ProdAttrDTO;
import org.jet.emall.prod.dto.ProdCateDTO;
import org.jet.emall.prod.dto.ProdSpecDTO;
import org.jet.emall.prod.po.ProdAttr;
import org.jet.emall.prod.po.ProdCate;
import org.jet.emall.prod.po.ProdSpec;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * @author xiaozai
 * @version 1.0
 * @date 2020-04-15 18:01
 */
@Mapper
public interface CategoryDtoTransfer {


    CategoryDtoTransfer INSTANCE = Mappers.getMapper(CategoryDtoTransfer.class);

    /**
     *  将分类PO转DTO
     * @param prodCate
     * @return
     */
    @Mapping(target = "children",ignore = true)
    CategoryDTO toDto(ProdCate prodCate);

    /**
     *  将分类PO列表转DTO列表
     * @param list
     * @return
     */
    List<CategoryDTO> toDtoList(List<ProdCate> list);

    /**
     *  将分类PO列表转DTO列表
     * @param list
     * @return
     */
    List<ProdCateDTO> toProdCateDtoList(List<ProdCate> list);

    /**
     *  将属性PO列表转DTO列表
     * @param list
     * @return
     */
    List<ProdAttrDTO> toAttrDtoList(List<ProdAttr> list);

    /**
     *  将规格PO列表转DTO列表
     * @param list
     * @return
     */
    List<ProdSpecDTO> toSpecDtoList(List<ProdSpec> list);

    /**
     *  将分类DTO转PO
     * @param cateDTO
     * @return
     */
    @Mapping(target = "id",ignore = true)
    ProdCate toPo(CategoryDTO cateDTO);
}
